﻿#ifndef TCPCODEC_TRANSMIT_H
#define TCPCODEC_TRANSMIT_H

#include <qobject.h>
#include "ObjAutoInject.h"
#include "TcpCodecBase.h"
#include <qvector.h>

class TcpCodec;
class TcpCodec_Transmit : public QObject,public ObjAutoInject,public TcpCodecBase
{
  Q_OBJECT
public:
  enum Result{
    Succeed=0,//发送成功，在设备返回确认报文后发送给客户端
    Sending,//正在发送，收到客户端指令并转发无误后发送给客户端
    CantSend,//不能发送，当前正在下发指令，不能再次发送指令
    Offline,//设备离线，设备处于离线状态
    TimeOut,//发送超时，发送指令时设备连接超时，此时设备也处于离线状态
    ErrorData,//错误数据，客户端指令格式不正确
    Size_Result//枚举类大小，用于默认返回值，遇到该值不做处理
  };
private://property
  QVector<QString> transmitResult;
private://dependency
  TcpCodec* tcpCodec=Q_NULLPTR;
public:
  explicit TcpCodec_Transmit();
  virtual ~TcpCodec_Transmit();
signals:
  void signal_result(uchar);
public:
  virtual void decode(DataPackage_TcpCodec* dataPackageInfo_User)override;
  QString getResultMessage(uchar type);
public://geter and seter
  TcpCodec* getTcpCodec()const;
  TcpCodec_Transmit* setTcpCodec(TcpCodec* const tcpCodec);
public:
  virtual void objectAutoInjection(QHash<QString,QObject*>* objMap)override;
};

#endif // TCPCODEC_TRANSMIT_H
